package com.wangshuqi;

import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPStore;
 
import javax.mail.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;
 
//获取邮件信息
public class tes {
 
    public static void main(String[] args) {
        // 邮件配置信息
        //POP3服务器: pop.163.com
        //SMTP服务器: smtp.163.com
        //IMAP服务器: imap.163.com
        String user = "邮箱账号";//邮箱账号
        String password = "imap授权码";//imap授权码
        String messageId = "要查询的邮件的 Message-ID"; // 要查询的邮件的 Message-ID
 
        // 创建会话
        Properties prop = System.getProperties();
        prop.put("mail.store.protocol", "imap");
        prop.put("mail.imap.host", "imap.163.com");
        prop.put("mail.smtp.auth", "true");
        //这部分就是解决异常的关键所在，设置IAMP ID信息
        HashMap IAM = new HashMap();
        //带上IMAP ID信息，由key和value组成，例如name，version，vendor，support-email等。
        // 这个value的值随便写就行
        IAM.put("name", "myname");
        IAM.put("version", "1.0.0");
        IAM.put("vendor", "myclient");
        IAM.put("support-email", "testmail@test.com");
        Session session = Session.getInstance(prop);
 
        try {
            // 使用imap会话机制，连接服务器
            int total = 0;
            IMAPStore store = (IMAPStore) session.getStore("imap");
            store.connect(user, password);
            store.id(IAM);
            //邮箱文件名称遍历
//            Folder[] folders = store.getDefaultFolder().list("*");
//            for (Folder folder : folders) {
//                System.out.println(folder.getName());
//            }
//            IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); // 收件箱
            IMAPFolder folder = (IMAPFolder) store.getFolder("已发送"); // 发件箱
            folder.open(Folder.READ_ONLY);
            // 获取总邮件数
            total = folder.getMessageCount();
            System.out.println("-----------------共有邮件：" + total + " 封--------------");
            // 得到发件箱文件夹信息，获取邮件列表
            Message[] messages = folder.getMessages();
            for (Message message : messages) {
                String[] header = message.getHeader("Message-ID");
                if (messageId.equals(header[0])){
                    System.out.println("找到啦！！！！！！！！！！！！！！");
                }
                System.out.println("Message-ID" + header[0]);
                System.out.println("发送时间：" + message.getSentDate());
                System.out.println("主题：" + message.getSubject());
                System.out.println("内容：" + message.getContent());
                System.out.println("--------------------------------------------");
            }
            // 释放资源
            if (folder != null) {
                folder.close(true);
            }
 
            if (store != null) {
                store.close();
            }
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}